/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
 var maxDepth = function(root) {
    // const getDepth = function(root){
    //   if(root === null) return 0
    //   let leftDepth = getDepth(root.left)
    //   let rightDepth = getDepth(root.right)
    //   return 1 + Math.max(leftDepth,rightDepth)
    // }
    // return getDepth(root)
    // 递归的参数 传入根节点 传出节点的高度
    // 结束的条件 当root === null return 0 高度为0
    // 一般逻辑  获得左子树的高度 和 右子树的高度 最大高度就是左右两个子树的高度最大值 + 1
    if(root === null) return 0
    let left = maxDepth(root.left)
    let right = maxDepth(root.right)
    return 1 + Math.max(left,right)
};